"""
Case Type   : python驱动psycopg2
Case Name   : 安装驱动
Create At   : 2023/8/23
Owner       : @ningyali
Description :
    1.解压PDBC得到lib,替换psycopg2
    2.输入python3,输入import psycopg2
Expect      :
    1.执行成功
    2.执行成功
History     :
"""
import os
import subprocess
import unittest

from testcase.CONNECTORS.PDBC.PSYCOPG2. \
    Opengauss_Function_Connect_Psycopg_Common import Psycopg2Common
from testcase.utils.CommonSH import CommonSH
from testcase.utils.Logger import Logger


class Psycopg1(unittest.TestCase):
    def setUp(self):
        self.log = Logger()
        text = f'-----{os.path.basename(__file__)} start-----'
        self.log.info(text)
        self.pri_sh = CommonSH('PrimaryDbUser')
        self.conn_info = {'dbname': self.pri_sh.node.db_name,
                          'user': self.pri_sh.node.db_user,
                          'password': self.pri_sh.node.db_password,
                          'host': self.pri_sh.node.ssh_host,
                          'port': self.pri_sh.node.db_port}
        self.psycopg_com = Psycopg2Common(**self.conn_info)

    def test_1(self):
        text = '----step1: 解压PDBC得到lib,替换psycopg2 expect: 执行成功----'
        res = self.psycopg_com.decompress_pkg()
        self.assertTrue(res, f'执行失败: {text}')
        res = self.psycopg_com.set_new_psycopg2()
        self.assertTrue(res, f'执行失败: {text}')

        text = '----step2: 输入python3,输入import psycopg2 expect: 执行成功----'
        self.log.info(text)
        cmd = f'python3 -c "import psycopg2"'
        self.log.info(cmd)
        res = subprocess.getoutput(cmd)
        self.log.info(res)
        self.assertNotIn("No module named 'psycopg2'", res, f'执行失败: {text}')

    def tearDown(self):
        text = '----run teardown----'
        self.log.info(text)

        text1 = f'----后置操作：删除解压文件目录----'
        self.log.info(text1)
        res = self.psycopg_com.clean_decompress_file()
        self.assertTrue(res, f'执行失败: {text1}')

        text = f'-----{os.path.basename(__file__)} end-----'
        self.log.info(text)
